package com.symbio.ishenapi.background.controller;

import com.jfinal.plugin.activerecord.Record;
import com.symbio.ishenapi.background.model.TmDoctorUser;
import com.symbio.ishenapi.background.model.TmPatientDoctor;
import com.symbio.ishenapi.common.controller.BaseController;
import io.jboot.web.controller.annotation.RequestMapping;

import java.text.SimpleDateFormat;
import java.util.*;

@RequestMapping("tmPatientDoctorController")
public class TmPatientDoctorController extends BaseController {

    /**
     * @Author jianghy
     * @Description 平台数据-关注患者数（平台维度）
     * @date
     * @return void
     */
    public void queryFocusPatientNumPt(){
        //格式转换
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        //接收的统计开始时间
        String startTime = getPara("startTime");
        //接收的统计结束时间
        String endTime = getPara("endTime");
        //当前时间
        Date n = new Date();
        //当前时间的近一个月时间
        Calendar c = Calendar.getInstance();
        c.setTime(n);
        c.add(Calendar.MONTH, -1);
        Date m = c.getTime();
        //初始化时间为空
        if(startTime==null||"".equals(startTime))
            //现在的时间 格式yyyy-MM-dd
            startTime = format.format(m);
        if(endTime==null||"".equals(endTime))
            //近一个月的时间 格式yyyy-MM-dd
            endTime = format.format(n);
        //计算时间差
        int daysBetween = 0;
        Date d1= new Date();
        Date d2= new Date();
        try{
            d1=format.parse(startTime);
            d2=format.parse(endTime);
            //两个时间相差的天数
            daysBetween = new Long((d2.getTime()-d1.getTime())/(60*60*24*1000)).intValue()+1;
        }catch (Exception e){
            e.printStackTrace();
        }
        String[] createTimes = new String[daysBetween];
        String[] counts = new String[daysBetween];
        Map map = new LinkedHashMap();
        Integer sumCounts = 0;
        for(int i=0;i<daysBetween;i++) {
            Date date = new Date();
            Calendar calendar = new GregorianCalendar();
            calendar.setTime(d1);
            calendar.add(Calendar.DATE, i);
            date = calendar.getTime();
            String time = format.format(date);
            int count = TmPatientDoctor.dao.queryFocusPatientNum(time);
            createTimes[i] = time;
            counts[i] = Long.toString(count);
            sumCounts+= Integer.valueOf(counts[i]);
        }
        map.put("createTimes",createTimes);
        map.put("counts",counts);
        map.put("sumCounts",sumCounts);
        renderJsonRet(map);
    }

    /**
     * @Author jianghy
     * @Description 平台数据-关注患者数（医生维度）折线图
     * @date
     * @return void
     */
    public void queryFocusPatientNumYs(){
        Map map = new LinkedHashMap();
        String roleName = getPara("roleName");//需要查询所有的医生  所以角色限名称应为代表医生的角色名字
        List<TmDoctorUser> list = TmDoctorUser.dao.queryDoctorAllInfo(roleName);
        if(list!=null||list.size()!=0){
            String[] doctorName = new String[list.size()];//医生名字
            String[] doctorIds = new String[list.size()];//医生id
            for(int i =0;i<list.size();i++){
                doctorName[i] = list.get(i).getUserName();
                doctorIds[i] = String.valueOf(list.get(i).getId());
            }
            map.put("doctorName",doctorName);
            map.put("doctorIds",doctorIds);
            //格式转换
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            //接收的统计开始时间
            String startTime = getPara("startTime");
            //接收的统计结束时间
            String endTime = getPara("endTime");
            //当前时间
            Date n = new Date();
            //当前时间的近一个月时间
            Calendar c = Calendar.getInstance();
            c.setTime(n);
            c.add(Calendar.MONTH, -1);
            Date m = c.getTime();
            //初始化时间为空
            if(startTime==null||"".equals(startTime))
                //现在的时间 格式yyyy-MM-dd
                startTime = format.format(m);
            if(endTime==null||"".equals(endTime))
                //近一个月的时间 格式yyyy-MM-dd
                endTime = format.format(n);
            String[] counts = new String[doctorIds.length];
            for(int i =0;i<doctorIds.length;i++){
                int count = TmPatientDoctor.dao.queryFocusPatientNumYs(startTime,endTime,doctorIds[i]);
                counts[i] = String.valueOf(count);
            }
            map.put("counts",counts);
            renderJsonRet(map);
        }else{
            renderJsonError(50002);
        }
    }
}
